Hello Lyn2py,

I ran into the same problem as you did and couldn't quite figure out what 
caused it. The JS function 'web2py_websocket' is described in 
/static/js/web2py.js. The file web2py.js was given a makeover in Web2py 
2.6.1 as changelog suggests: 

*For pre 2.6 applications to work with web2py >=2.6, you must copy 
> static/js/web2py.js, controllers/appadmin.py, and views/appadmin.html from 
> the welcome app to your own apps (all of them).*


A quick look at the new web2py.js revealed that it features some additional 
code for compatibility reasons. But a wrong variable name has been used for 
web2py_websocket's compatibility code. Line 682:

web2py_websocket = jQuery.web2py.websocket;

Should be:

web2py_websocket = jQuery.web2py.web2py_websocket;

I have included a patch.

On Friday, August 2, 2013 5:07:19 AM UTC+2, lyn2py wrote:
>
> I am trying the websocket on google chrome and encountered this error:
>
> Uncaught TypeError: Property 'web2py_websocket' of object [object Object] 
> is not a function 
>
> I have followed the instructions. What could I be doing wrong?
>
> Thanks!
>
> On Friday, July 26, 2013 10:48:07 PM UTC+8, Massimo Di Pierro wrote:
>>
>> the basic idea of websocket is that input data must be validated by 
>> web2py therefore data can only be received from web2py.
>>
>>
>> In your JS code you simply do:
>>
>> <script>                                                                 
>>                                                            
>>    $(document).ready(function(){                                         
>>                                                               
>>       
>> if(!web2py_websocket('ws://127.0.0.1:8888/realtime/mygroup',function(e){alert(e.data)}))
>>  
>>                                         
>>          alert("html5 websocket not supported by your browser, try Google 
>> Chrome");                                                    
>>    });                                                                   
>>                                                               
>>  </script> 
>>
>> This makes the client join the group "mygroup" and is data is received, 
>> the callback function is called.
>> You post by doing an ajax to web2py and web2py does
>>
>> from gluon.contrib.websocket_messaging import websocket_send             
>>                                                            
>> websocket_send('http://127.0.0.1:8888','Hello World','mykey','mygroup')
>>
>> This sends the message "hello world" to all the members of the group 
>> "mygroup".
>>
>> Notice that web2py and websocket share a "mykey". This is how security is 
>> implemented. web2py validates input and it knows the key for posting. the 
>> only way to allow posting directly from JS would be to remove this security 
>> step or creating some authentication at the JS level. I do not trust 
>> authentication at the JS level.
>>
>>
>>
>>
>>
>> On Friday, 26 July 2013 09:08:37 UTC-5, Eduardo Cruz wrote:
>>>
>>> Is there a way to send data to a websocket from javascript 
>>> using web2py_websocket ?
>>
>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
diff --git a/applications/welcome/static/js/web2py.js b/applications/welcome/static/js/web2py.js
index e714d3c..c7a522a 100644
--- a/applications/welcome/static/js/web2py.js
+++ b/applications/welcome/static/js/web2py.js
@@ -679,7 +679,7 @@
 /* compatibility code - start */
 ajax = jQuery.web2py.ajax;
 web2py_component = jQuery.web2py.component;
-web2py_websocket = jQuery.web2py.websocket;
+web2py_websocket = jQuery.web2py.web2py_websocket;
 web2py_ajax_page = jQuery.web2py.ajax_page;
 /*needed for IS_STRONG(entropy)*/
 web2py_validate_entropy = jQuery.web2py.validate_entropy;

Reply via email to